package homework;

import java.util.LinkedList;
import java.util.Queue;

//作业标题(2723)
//用队列实现栈
//
//作业内容
//用队列实现栈
//https://leetcode.cn/problems/implement-stack-using-queues/solutions/
public class h2723 {
    class MyStack {
        private Queue<Integer> q1;
        private Queue<Integer> q2;

        public MyStack() {
            q1 = new LinkedList<>();
            q2 = new LinkedList<>();
        }

        public void push(int x) {
            if(q1.isEmpty()) q2.offer(x);
            else q1.offer(x);
        }

        public int pop() {
            if(empty()) return -1;
            if(!q1.isEmpty())
            {
                int size = q1.size();
                for(int i = 0; i < size - 1; i++)
                {
                    q2.offer(q1.poll());
                }
                return q1.poll();
            }
            else
            {
                int size = q2.size();
                for(int i = 0; i < size - 1; i++)
                {
                    q1.offer(q2.poll());
                }
                return q2.poll();
            }
        }

        public int top() {
            if(empty()) return -1;
            int ret = 0;
            if(!q1.isEmpty())
            {
                int size = q1.size();
                for(int i = 0; i < size; i++)
                {
                    ret = q1.poll();
                    q2.offer(ret);
                }
                return ret;
            }
            else
            {
                int size = q2.size();
                for(int i = 0; i < size; i++)
                {
                    ret = q2.poll();
                    q1.offer(ret);
                }
                return ret;
            }
        }

        public boolean empty() {
            return q1.isEmpty() && q2.isEmpty();
        }
    }
}
